package com.flute.haflute.jobbox.communication;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * 通信平台接口，用于保存所有消息器并和其他节点通信，为其他节点提供通信器或通信
 */
public interface CommunicationServiceFactory extends Remote {
	/** 从通信平台获得指定的消息管理器 */
	public Remote getMessager(String messagerName) throws RemoteException;

	/** 向集群通信平台注入一个消息管理器 */
	public void putMessager(String messagerName, Remote messager)
			throws RemoteException;

	/** 删除消息器 */
	public Remote removeMessager(String messagerName) throws RemoteException;

	/** 取得主节点的消息通知器,所有任务消息从该消息器获得 */
	public NotifyService getNotifier() throws RemoteException;

	/** 获取到唯一的编号 */
	public int getDaemonNo(String ip) throws RemoteException;

	/** 配置一个节点能启动的最多的子节点数目 */
	public void setConfiguredNumDaemons(String nodeIp, int numDaemons)
			throws RemoteException;
}
